package com.min.redis.common.util.redis;

/**
 * @author wangmin
 * @date 2023/12/31
 */

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.redisson.api.RLock;

import java.util.Objects;

/**
 * RedissonLock 包装的锁对象 实现AutoCloseable接口，在对象被close之前有可能持有某个资源，如果对象是在try-with-resources代码块中声明
 * 则close方法会被自动执行
 **/

@Getter
@AllArgsConstructor
@NoArgsConstructor
public class ILock implements AutoCloseable{

    /**
     * 持有的锁对象
     */
    private Object lock;
    /**
     * redisson工具类
     */
    private RedissonUtil redissonUtil;

    @Override
    public void close() throws Exception {
        if(Objects.nonNull(lock)){
            redissonUtil.unlock(lock);
        }
    }
}
